IT landscapes and business processes are becoming more complex on a daily basis. Automating these processes could simplify the IT architecture and reduce some of the errors and issues caused through human error. In addition, asynchronous execution of background processes in computer systems has become increasingly important for many business applications. The execution of business processes may take hours or days (for example, assessing the risk of a complex financial portfolio, performing billing and dunning operations for millions accounts, etc.) As state of the art computer systems, and more specifically the application servers provided by various vendors, are transaction oriented, it becomes more difficult, if not impossible, to submit requests for execution of background processes or jobs and to monitor the progress of the execution.
Currently, there is no universally agreed standard for asynchronous processing of jobs in Java Application Server (Java AS). Java AS basic features are standardized in Java Enterprise Edition™ (Java EE) specification. The standard defines a very low level of abstraction for asynchronous processing on the application programming interface (API) level that is not sufficient for a complex business application in most cases. The current Java EE platform includes “java.util.Timer” and the Enterprise JavaBean™ (EJB) Timer Service. These solutions are not flexible enough to support the typically required range of scheduling jobs. Scheduling jobs scenarios that currently present a challenge include:                Long running jobs, e.g., complex calculations, month-end closing, etc., in which it must be ensured that the calculations run exactly once and that any errors are reported to the business.        Streaming jobs, e.g., pricing and billing jobs, in which the processing involves large volumes of data handled in parallel, usually performed in clustered environments.        Background jobs that may span multiple heterogeneous systems, in which processing on one system depends on successful completion of another job on another system.        
Some vendors (Oracle Corp, IBM Corp, OpenSymphony Quartz—open source) have developed their own proprietary scheduling solutions. Some third party vendors (Redwood Software) have included Java EE in the set of their supported platforms. Despite this, there is a growing need for an integrated solution that provides services to internal and external users for asynchronous execution of business processes. Further, proprietary solutions do not consistently address important issues such as:                Monitoring and error handling—it is not possible to determine which jobs were run when, by whom, and to correlate logging information with a job for analysis if an error occurs.        Managing background processing in multiple applications—ad-hoc solutions cannot handle a large number of jobs or when processes consist of jobs in multiple applications.        Integrating with non-Java processing—complex business processes often run in connection with Java and non-Java systems.        